perm filename V.FAI[TMP,LCS] blob sn#493303 filedate 1980-01-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE XM
C00014 00003	DECOUT:	IDIVI T,=10	DEC TTY OUT
C00024 00004	XGPOUT:	OPEN VRN,XNIT		XGP OUTPUT
C00026 00005	INBITS:	PUSHJ P,NAMGET		INPUT OLD BIT FILE
C00028 00006	CORUP
C00030 00007	GETNAM:	MOVEI A,		FILE SCAN
C00035 ENDMK
C⊗;
TITLE XM
;******** FOR THICKER LINES, FIRST TYPE <4> FOR DOTS*4 OR <9> FOR DOTS*9
	;↓↓AC DEF
A←1
B←2
C←3
D←4
E←5
L←6
U←7
X←11
Y←12
XD←13
T←15
TT←16
P←17
	
LPDL←←69
NBUFS←←4
DSK←←1
VRN←←2

LMAR←←=0
;;RMAR←←=1699
;;WIDTH←←=1700
LBUFL←←=48	;LINE LENGTH IN WORDS

;;LSTBIT←←1⊗34
;;OVERLAP←←=50

EXTERN JOBREL,JOBFF,JOBTPC,JOBAPR,JOBCNI
;;MAILBF:	BLOCK 40
;;SIGN:	0
LINE:	0
PNTR:	0

BEG:	SETOM LINE
	GETLIN LINE		;FOR ERROR PRINTOUT
	CALLI
	HRRZS LINE		;CLEAR LINE BITS
	HRRZI A,CORUP
	HRRZM A,JOBAPR
	HRRZ A,JOBFF		;RESET CORE WITHOUT A RESET
	CORE A,
	JRST 4,.

	MOVEI	A,20000		;REG  MPV
	APRENB	A,		;REG  ENABLE OLD WAY!

	MOVE P,[-LPDL,,PDL-1]
	JRST INBITS

INCHLF:	INCHWL 0		 ;GET ANOTHER CHARACTER
	CAIE 0,12		;WAS IT A LF?
	JRST INCHLF		 ;GET THE LF
	POPJ P,
POPJ1:	AOS (P)
CPOPJ:	POPJ P,

DECOUT:	IDIVI T,=10	;DEC TTY OUT
	HRLM TT,(P)
	SKIPE T
	PUSHJ P,DECOUT
	HLRZ TT,(P)
	ADDI TT,60
	ROT TT,-7
	MOVEM TT,.+2
	PUSHJ P,ERRPNT
	0
	POPJ P,

ERRPNT:	HRRZ TT,(P)		;ERROR TTY OUT
	MOVEM TT,PNTR
	MOVEI TT,LINE
	TTYMES TT,
	JRST [	OUTSTR[ASCIZ/TTYMES FAILED	/]
		OUTSTR @PNTR
		OUTSTR[ASCIZ/
/]
		JRST .+1]
	POP P,TT
	HRL TT,(TT)
	TLNE TT,376
	AOJA TT,.-2
	JRST 1(TT)
XERR:	PUSHJ P,ERRPNT		;DET TTY OUT
	ASCIZ/
MESSAGE FROM X WORKING ON /
	MOVE TT,FILNAM
	PUSHJ P,SIXOUT
	PUSHJ P,ERRPNT
	ASCIZ/./
	HLLZ TT,FILEXT
	PUSHJ P,SIXOUT
	PUSHJ P,ERRPNT
	ASCIZ/[/
	MOVE TT,FILPPN
	PUSHJ P,SIXOUT
	PUSHJ P,ERRPNT
	ASCIZ/] : /
	POPJ P,

SIXOUT:	JUMPE TT,CPOPJ		;SIXBIT OUT
	SETZ T,
	LSHC T,6
	ADDI T,40
	PUSH P,TT
	ROT T,-7
	MOVEM T,.+2
	PUSHJ P,ERRPNT
	0
	POP P,TT
	JRST SIXOUT

DETCHK:	SETOM DET#	;CK FOR DET JOB
	GETLIN DET
	HRRES DET
	SKIPL DET
	AOS (P)
	POPJ P,

XGPOUT:	OPEN VRN,XNIT		;XGP OUTPUT
	JRST NOXGP
	OUTSTR[ASCIZ/CRANKING VRN
/]
	LOCK
OUTIT:	OUT VRN,XGPPTR
	JRST OUTOK
DSKERR:	PUSHJ P,DETCHK
	PUSHJ P,XERR
	PUSHJ P,ERRPNT
	ASCIZ /VRN OUTPUT ERROR.
/
OUTOK:	JRST NEXTNM
	UNLOCK
	RELEAS VRN,
;;XMORE:	PUSHJ P,DETCHK
;;	JFCL
;;	OUTSTR[ASCIZ/R=REPEAT, X=EXIT  /]
;;	INCHRW C
;;	CAIE C,15
;;	JRST .+3
;;	INCHRW C
;;	JRST XMORE+2			; WON'T ACCEPT JUST CRLF
;;	OUTSTR[ASCIZ/
;;/]
;;	CAIE C,"X"
;;	CAIN C,"x"
;;	SKIPA
;;	JRST .+3
	PUSHJ P,CORDWN			;REALLY DONE, CORE DOWN
	JRST NODEL 
;;	CAIE C,"R"
;;	CAIN C,"r"
;;	JRST XGPOUT
;;	JRST XMORE+2
NEXTNM:	MOVEI =64
	ADDM FILNAM		;PUSH UP 5TH LETTER OF NAME
	SETZM FILEXT+1		;FOR LOOKUP
	SETZM FILPPN
	LOOKUP FILNAM		;IS IT THERE?
	JRST OUTOK+1		;NO, WE'RE ALL DONE
	MOVE U,UU		;GET BACK NEEDED INFO
	SETZ 10,
 	JRST TRYTRY+2		;NOW PRINT NEXT FILE
NODEL:	RELEASE DSK,
	SKIPGE DET
	PUSHJ P,XERR
	PUSHJ P,ERRPNT
	ASCIZ/ALL DONE!
/
	CALLI 12		;LEAVE

NOXGP:	PUSHJ P,DETCHK
	PUSHJ P,XERR
	PUSHJ P,ERRPNT
   	ASCIZ /
WAITING FOR VRN /
	HRRZI A,1017
	HRRZM A,XNIT
	JRST XGPOUT

XNIT:	417
	'VRN   '
	0
XGPPTR:	BLOCK 2

CORDWN:	MOVE T,JOBFF
	SUBI T,1
	CALLI T,11
	JRST 4,.
	POPJ P,

INBITS:	PUSHJ P,NAMGET		;INPUT OLD BIT FILE
	HRRZ U,JOBFF
	HRRZI T,177(U)
	CORE T,
	JRST INBITS
	SOJ U,
	HRLI U,-200
	OPEN [17↔'DSK   '↔0]
	JRST INBITS
	LOOKUP FILNAM
	JRST INBITS
	movem U,UU#	;SAVE FOR NEXT FILE
	SETZ 10,
TRYTRY:	OPEN VRN,XNIT	  ;***** GRAB THE VRN BEFORE CORE EXPANSION
	JRST NONO    	 ;CAN'T GET IT!
	INPUT U
	MOVE T,[BYTE (12)4001,LMAR,LBUFL]
	EXCH T,1(U)
	HLL U,T
	MOVEM U,XGPPTR
	HRLI U,(T)
	TLNN U,777777
	JRST CLOZE
	ADDI U,200
	MOVNI T,(T)
	ADDI T,(U)
	CORE T,
	JRST INBITS	;HANG
	INPUT U
;;CLOZE:	RELEAS
CLOZE:	JRST XGPOUT

NONO:	OUTSTR[ASCIZ/
WAITING FOR VRN  /]
	HRRZI A,1017
	HRRZM A,XNIT
	JRST TRYTRY

;CORUP

CORUP:

REPEAT 0,<	OLD WAY - FLUSHED BY REG 1-3-76

	HRRZ B,JOBCNI
	CAIE B,20000
	DISMIS
	MOVE A,JOBTPC
	MOVEM A,IPC+1
	UWAIT
	DEBREAK
>;END REPEAT 0


REPEAT 0,<
	INTJEN IPC
>

	JRST	2,@JOBTPC	;REG  THIS IS HOW TO DISMISS OLD INTERRUPT

NOMPV:	OUTSTR	[ASCIZ/UNEXPECTED INTERRUPT?
/]
	JRST	2,@JOBTPC

GETNAM:	MOVEI A,		;FILE SCAN
	MOVE B,[440600,,A]
GETNML:	PUSHJ P,RCH
	POPJ P,
	SUBI C,40
	TLNE B,770000
	IDPB C,B
	JRST GETNML

GETP:	MOVEI A,
GETPL:	PUSHJ P,RCH
	POPJ P,
	TRNE A,770000
	JRST GETPL
	LSH A,6
	ADDI A,-40(C)
	JRST GETPL

RCH:	INCHWL C
	CAIN C,42
	JRST RCHQ
	CAIE C,11
	CAIN C," "
	JRST RCH
	CAIE C,"."
	CAIN C,","
	POPJ P,
	CAIE C,"["
	CAIN C,"]"
	POPJ P,
RCHQR:	CAIGE C,40
	POPJ P,
	CAIL C,"a"
	CAILE C,"z"
	CAIA
	SUBI C,40
	JRST POPJ1

RCHQ:	INCHWL C
	JRST RCHQR

NAMGET:	OUTSTR [ASCIZ/
	FILE = /]
	SETZM FILEXT+1
	SETZM FILPPN
	MOVSI A,'BIT'
	MOVEM A,FILEXT
	PUSHJ P,GETNAM
	SKIPN A
 	MOVE A,['PLT   ']
    	MOVEM A,FILNAM
	CAIE C,"."
	JRST NOEXTN
	PUSHJ P,GETNAM
	MOVEM A,FILEXT
NOEXTN:	CAIE C,"["
	JRST FFDX
	PUSHJ P,GETP
	HRLZM A,FILPPN
	PUSHJ P,GETP
	HRRM A,FILPPN
FFDX:	INCHRW C
	CAIE C,12
	JRST FFDX
	POPJ P,

FILNAM:	0			;GLOPS OF JUNK
FILEXT:	0
	0
FILPPN:	0

LKENT:	BLOCK 4

;;XGSNAM:	0
;;XGSEXT:	0
;;	0
;;XGSPPN:	0

;;IBUF:	BLOCK 3

BITTAB:	FOR I←43,0,-1{1⊗I
}
BYTTAB:	FOR I←36,0,-6{REPEAT 6,{77⊗I}}

;;DBUF:	BLOCK LBUFL+2

PDL:	BLOCK LPDL

END BEG